home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / E-Education / (c)ed19.d64 / checkers (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  3KB  |  118 lines

  1. 10 PRINT"[147]               CHECKERS                 "
  2. 15 PRINT"*FIRST ENTER  COLUMN [146] THEN  ROW [146] NUMBERS"
  3. 20 PRINT"*WHEN JUMPING PRESS  RETURN [146]":PRINT:PRINT
  4. 21 PRINT"*TO PLAY, PRESS  SPACE [146]";B$
  5. 22 GETB$:IFB$=""THEN22
  6. 100 DIMX(4),S(7,7):G=-1:X(0)=-99:PRINT"[144][147]"
  7. 101 SYS65517:IFPEEK(781)=40THEN103
  8. 102 POKE36879,59:GOTO110
  9. 103 POKE53280,3:POKE53281,3
  10. 110 DATA1,0,1,0,0,0,-1,0,0,1,0,0,0,-1,0,-1,15
  11. 120 A$="                   ":B$=""
  12. 130 FORX=0TO7:FORY=0TO7:READJ:IFJ=15THEN150
  13. 140 S(X,Y)=J:GOTO160
  14. 150 RESTORE:READS(X,Y)
  15. 160 NEXTY,X:PRINT"[147]";
  16. 170 FORX=0TO7:FORY=0TO7:IFS(X,Y)>-1THEN200
  17. 180 IFS(X,Y)=-1THENFORA=-1TO1STEP2:B=G:GOSUB210:NEXTA
  18. 190 IFS(X,Y)=-2THENFORA=-1TO1STEP2:FORB=-1TO1STEP2:GOSUB210:NEXTB,A
  19. 200 NEXTY,X:GOTO370
  20. 210 U=X+A:V=Y+B:IFU<0ORU>7ORV<0ORV>7THEN260
  21. 220 IFS(U,V)=0THENGOSUB270:GOTO260
  22. 230 IFS(U,V)<0THEN260
  23. 240 U=U+A:V=V+B:IFU<0ORV<0ORU>7ORV>7THEN260
  24. 250 IFS(U,V)=0THENGOSUB270
  25. 260 RETURN
  26. 270 IFV=0ANDS(X,Y)=-1THENQ=Q+2
  27. 280 IFABS(Y-V)=2THENQ=Q+5
  28. 290 IFY=7THENQ=Q-2
  29. 300 IFY=0ORU=7THENQ=Q+1
  30. 310 FORC=-1TO1STEP2:IFU+C<0ORU+C>7ORV+G<0THEN350
  31. 320 IFS(U+C,V+G)<0THENQ=Q+1:GOTO350
  32. 330 IFU-C<0ORU-C>7ORV-G>7THEN350
  33. 340 IFS(U+C,V+G)>0AND(S(U-C,V-G)=0OR(U-C=XANDV-G=Y))THENQ=Q-2
  34. 350 NEXTC:IFQ>X(0)THENX(0)=Q:X(1)=X:X(2)=Y:X(3)=U:X(4)=V
  35. 360 Q=0:RETURN
  36. 370 IFX(0)=-99THEN1040
  37. 380 GOSUB1060:PRINT"ME"X(1);","X(2)"TO"X(3)","X(4):X(0)=-99
  38. 390 FORXX=1TO400:NEXTXX
  39. 400 IFX(4)=0THENS(X(3),X(4))=-2:GOTO420
  40. 410 S(X(3),X(4))=S(X(1),X(2))
  41. 420 S(X(1),X(2))=0:IFABS(X(1)-X(3))<>2THEN510
  42. 430 S((X(1)+X(3))/2,(X(2)+X(4))/2)=0
  43. 440 X=X(3):Y=X(4):IFS(X,Y)=-1THENB=-2:FORA=-2TO2STEP4:GOSUB480
  44. 450 IFS(X,Y)=-2THENFORA=-2TO2STEP4:FORB=-2TO2STEP4:GOSUB480:NEXTB
  45. 460 NEXTA:IFX(0)<>-99THENPRINT"TO"X(3)","X(4);:X(0)=-99:GOTO400
  46. 470 GOTO510
  47. 480 U=X+A:V=Y+B:IFU<0ORU>7ORV<0ORV>7THEN500
  48. 490 IFS(U,V)=0ANDS(X+A/2,Y+B/2)>0THENGOSUB270
  49. 500 RETURN
  50. 505 FORI=1TO25:PRINT:NEXT
  51. 510 PRINT"[144] ROW":PRINT"[144]  [172][162][162][162][162][162][162][162][162][187]":FORY=7TO0STEP-1:PRINTY;"[157][161][146]";:FORX=0TO7
  52. 520 IFS(X,Y)=0THENIF(X+Y)/2=INT((X+Y)/2)THENPRINT" [146]";:GOTO580
  53. 530 IFS(X,Y)=0THENPRINT" ";
  54. 540 IFS(X,Y)=1THENPRINT"[209][146]";:GOTO580
  55. 550 IFS(X,Y)=-1THENPRINT"[215][146]";:GOTO580
  56. 560 IFS(X,Y)=-2THENPRINT"*";:GOTO580
  57. 570 IFS(X,Y)=2THENPRINT"*[146]";
  58. 580 NEXTX:PRINT"[161]":NEXTY:PRINT"  [188][162][162][162][162][162][162][162][162][146][190]":PRINT"   01234567 COL"
  59. 590 GOSUB1060:PRINT"FROM";
  60. 600 GETG$:IFG$=""THEN600
  61. 610 IFG$<"0"ORG$>"7"THEN590
  62. 620 E=VAL(G$):PRINTE;",";
  63. 630 GETG$:IFG$=""THEN630
  64. 640 IFG$<"0"ORG$>"7"THEN590
  65. 650 H=VAL(G$):PRINTH
  66. 660 X=E:Y=H:IFS(X,Y)<=0THEN590
  67. 670 PRINT"TO";
  68. 680 GETG$:IFG$=""THEN680
  69. 690 IFG$<"0"ORG$>"7"THEN670
  70. 700 A=VAL(G$):PRINTA;",";
  71. 710 GETG$:IFG$=""THEN710
  72. 720 IFG$<"0"ORG$>"7"THEN670
  73. 730 B=VAL(G$):PRINTB
  74. 740 X=A:Y=B
  75. 750 IFS(X,Y)=0ANDABS(A-E)<=2ANDABS(A-E)=ABS(B-H)THEN770
  76. 760 GOTO590
  77. 770 I=46
  78. 780 S(A,B)=S(E,H):S(E,H)=0:IFABS(E-A)<>2THEN910
  79. 790 S((E+A)/2,(H+B)/2)=0
  80. 800 PRINT"+TO";
  81. 810 GETG$:IFG$=""THEN810
  82. 820 IFG$=CHR$(13)THEN910
  83. 830 IFG$<"0"ORG$>"7"THEN810
  84. 840 A1=VAL(G$):PRINTA1;",";
  85. 850 GETG$:IFG$=""THEN850
  86. 860 IFG$=CHR$(13)THEN910
  87. 870 IFG$<"0"ORG$>"7"THEN850
  88. 880 B1=VAL(G$):PRINTB1
  89. 890 IFS(A1,B1)<>0ORABS(A1-A)<>2ORABS(B1-B)<>2THEN800
  90. 900 E=A:H=B:A=A1:B=B1:I=I+15:GOTO780
  91. 910 IFB=7THENS(A,B)=2
  92. 920 PRINT"01234567 COL"
  93. 930 PRINT"[145][145]  [188][162][162][162][162][162][162][162][162][146][190][145][145]"
  94. 940 FORY=0TO7:PRINTY;"[157][161][146]";:FORX=0TO7
  95. 950 IFS(X,Y)=0THENIF(X+Y)/2=INT((X+Y)/2)THENPRINT" [146]";:GOTO1010
  96. 960 IFS(X,Y)=0THENPRINT" ";:GOTO1010
  97. 970 IFS(X,Y)=1THENPRINT"[209][146]";:GOTO1010
  98. 980 IFS(X,Y)=-1THENPRINT"[215][146]";:GOTO1010
  99. 990 IFS(X,Y)=-2THENPRINT"*";:GOTO1010
  100. 1000 IFS(X,Y)=2THENPRINT"*[146]";
  101. 1010 NEXTX:PRINT"[161][145][145]":NEXTY
  102. 1020 PRINT" ROW":PRINT"  [172][162][162][162][162][162][162][162][162][187][145][145]"
  103. 1030 GOTO170
  104. 1040 GOSUB1060:FORI=1TO40:PRINT"[218]";:FORJ=1TO50:NEXT:NEXT
  105. 1050 PRINT" YOU WIN ! [146]":GOTO1100
  106. 1060 PRINTB$
  107. 1070 FORXX=1TO8:PRINTA$:NEXTXX:PRINTB$:RETURN
  108. 1100 PRINT"[147] YOU HAVE A CHOICE:
  109. 1110 [153]" PRESS  P WAIT TO PLAY AGAIN
  110. 1120 PRINT" PRESS  M [146] TO RETURN TO MENU
  111. 1130 [161]R$:[139]R$[179][177]"P"[175]R$[179][177]"M"[167]1130
  112. 1140 [139]R$[178]"P"[167] 10
  113. 1150 [153]"LOAD RETURNING TO THE DISK MENU
  114. 1160 LOAD"MENU",8
  115. 1170 RUN
  116. 1180 END
  117. 1190 REM WHC 91:01:05
  118.